﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OracleClient;
using bi4homev3.Entidades;

namespace bi4homev3.Acceso_a_Datos
{
    public class OracleReporteDAO : ReporteDAO
    {
        
        public DataSet ReporteSeviciosAlimentos(string usrname)
        {
            #region Metodo de Generacion de Dataset para reporte discriminando gastos en servicios y alimentos
            OracleConnection comando = FabricaOracleDAO.Crear();
            // Crear el objeto Comando y sus atributos
            OracleCommand cmd = new OracleCommand("BI4HOMEREPORTS.REPORTE_SERVICIOS_COMIDA", comando);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new OracleParameter("USR", OracleType.VarChar, 15));
            cmd.Parameters["USR"].Value = usrname; 
            // Crear el objeto parametro para el cursor
            OracleParameter cursor = new OracleParameter();
            // Se indica el tipo de parametro
            cursor.OracleType = OracleType.Cursor;
            //se establece la direccion del parametro
            cursor.Direction = ParameterDirection.ReturnValue;
            //se agrega el parametro a la coleccion del comando
            cmd.Parameters.Add(cursor);
            //se crea el data adapter
            OracleDataAdapter plug = new OracleDataAdapter(cmd);
            //se crea el data set
            DataSet ds = new DataSet();
            //se llena el data set
            plug.Fill(ds);
            #endregion
            FabricaOracleDAO.cerrarConexion();
            return ds;
        }

        public DataSet Servicios_AlimentosXtiempo(string usrname, string fecha1, string fecha2)
        {
            #region Metodo de generacion de Dataset para reporte de gasto en categorias por tiempo
            OracleConnection comando = FabricaOracleDAO.Crear();
            // Crear el objeto Comando y sus atributos
            OracleCommand cmd = new OracleCommand("BI4HOMEREPORTS.SERVICIO_ALIMENTO_XMES", comando);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new OracleParameter("USR", OracleType.VarChar, 15));
            cmd.Parameters.Add(new OracleParameter("FECHA1", OracleType.VarChar, 15));
            cmd.Parameters.Add(new OracleParameter("FECHA2", OracleType.VarChar, 15));
            cmd.Parameters["USR"].Value = usrname;
            cmd.Parameters["FECHA1"].Value = fecha1;
            cmd.Parameters["FECHA2"].Value = fecha2;
            // Crear el objeto parametro para el cursor
            OracleParameter cursor = new OracleParameter();
            // Se indica el tipo de parametro
            cursor.OracleType = OracleType.Cursor;
            //se establece la direccion del parametro
            cursor.Direction = ParameterDirection.ReturnValue;
            //se agrega el parametro a la coleccion del comando
            cmd.Parameters.Add(cursor);
            //se crea el data adapter
            OracleDataAdapter plug = new OracleDataAdapter(cmd);
            //se crea el data set
            DataSet ds = new DataSet();
            //se llena el data set
            plug.Fill(ds);
            #endregion
            FabricaOracleDAO.cerrarConexion();
            return ds;
        }

        public DataSet ServiciosXmes(string usrname, string fecha1, string fecha2)
        {
            #region Metodo de generacion de Data set para crear el reporte de gastos en Servicios por fechas
            OracleConnection comando = FabricaOracleDAO.Crear();
            // Crear el objeto Comando y sus atributos
            OracleCommand cmd = new OracleCommand("BI4HOMEREPORTS.SERVICIOS_XMES", comando);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new OracleParameter("USR", OracleType.VarChar, 15));
            cmd.Parameters.Add(new OracleParameter("FECHA1", OracleType.VarChar, 15));
            cmd.Parameters.Add(new OracleParameter("FECHA2", OracleType.VarChar, 15));
            cmd.Parameters["USR"].Value = usrname;
            cmd.Parameters["FECHA1"].Value = fecha1;
            cmd.Parameters["FECHA2"].Value = fecha2;
            // Crear el objeto parametro para el cursor
            OracleParameter cursor = new OracleParameter();
            // Se indica el tipo de parametro
            cursor.OracleType = OracleType.Cursor;
            //se establece la direccion del parametro
            cursor.Direction = ParameterDirection.ReturnValue;
            //se agrega el parametro a la coleccion del comando
            cmd.Parameters.Add(cursor);
            //se crea el data adapter
            OracleDataAdapter plug = new OracleDataAdapter(cmd);
            //se crea el data set
            DataSet ds = new DataSet();
            //se llena el data set
            plug.Fill(ds);
            #endregion
            FabricaOracleDAO.cerrarConexion();
            return ds;
        }

        public DataSet CategoriasXmes(string usrname, string fecha1, string fecha2)
        {
            #region metodo para la creacion de reporte de gastos en categorias por fechas
            OracleConnection comando = FabricaOracleDAO.Crear();
            // Crear el objeto Comando y sus atributos
            OracleCommand cmd = new OracleCommand("BI4HOMEREPORTS.GASTO_CATEGORIAS_XMES", comando);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new OracleParameter("USR", OracleType.VarChar, 15));
            cmd.Parameters.Add(new OracleParameter("FECHA1", OracleType.VarChar, 15));
            cmd.Parameters.Add(new OracleParameter("FECHA2", OracleType.VarChar, 15));
            cmd.Parameters["USR"].Value = usrname;
            cmd.Parameters["FECHA1"].Value = fecha1;
            cmd.Parameters["FECHA2"].Value = fecha2;
            // Crear el objeto parametro para el cursor
            OracleParameter cursor = new OracleParameter();
            // Se indica el tipo de parametro
            cursor.OracleType = OracleType.Cursor;
            //se establece la direccion del parametro
            cursor.Direction = ParameterDirection.ReturnValue;
            //se agrega el parametro a la coleccion del comando
            cmd.Parameters.Add(cursor);
            //se crea el data adapter
            OracleDataAdapter plug = new OracleDataAdapter(cmd);
            //se crea el data set
            DataSet ds = new DataSet();
            //se llena el data set
            plug.Fill(ds);
            #endregion
            FabricaOracleDAO.cerrarConexion();
            return ds;
        }
    }
}
